﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using DevComponents.DotNetBar;

namespace Quan_Ly_Dai_Ly
{
    public partial class PhieuXuatHang : Office2007Form
    {
        public PhieuXuatHang()
        {
            InitializeComponent();
        }

        private void PhieuXuatHang_Activated(object sender, EventArgs e)
        {
            try
            {
                MainForm.Connect.Open();
                DataTable dt_DaiLy = new DataTable();
                SqlDataAdapter da_DaiLy = new SqlDataAdapter("select * from DAILY order by CAST(TenDaiLy as nvarchar(200)) asc",
                                                       MainForm.Connect);
                da_DaiLy.Fill(dt_DaiLy);
                cb_Ten.DataSource = dt_DaiLy;
                cb_Ten.DisplayMember = "TenDaiLy";
                cb_Ten.ValueMember = "MaDaiLy";
                SqlDataAdapter da_MatHang = new SqlDataAdapter("select * from MATHANG, DONVITINH where MATHANG.MaDonViTinh = DONVITINH.MaDonViTinh order by CAST(TenMatHang as nvarchar(200)) asc",
                                                                MainForm.Connect);
                dt_MatHang.Clear();
                da_MatHang.Fill(dt_MatHang);
                MainForm.Connect.Close();
                MatHang.DataSource = dt_MatHang;
                MatHang.DisplayMember = "TenMatHang";
            }
            catch (SqlException sqlEx)
            {
                MainForm.Connect.Close();
                MessageBoxEx.Show("Lỗi kết nối cơ sở dữ liệu!\n" + sqlEx.Message, "Thông Báo");
            }
        }

        private void PhieuXuatHang_Load(object sender, EventArgs e)
        {
            d_NgayLap.Value = DateTime.Now;
            bt_DongY.Enabled = false;
        }

        private void cb_Ten_SelectedIndexChanged(object sender, EventArgs e)
        {
            dg_DanhSach.DataSource = new DataTable();
            bt_DongY.Enabled = false;
        }

        private void buttonX3_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void dg_DanhSach_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
        {
            if (dg_DanhSach.RowCount > 1)
                dg_DanhSach.Rows[e.RowIndex - 1].Cells[0].Value = dg_DanhSach.RowCount - 1;
            bt_DongY.Enabled = true;
        }

        private void dg_DanhSach_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
        {
            if (dg_DanhSach.RowCount > 1)
            {
                int TongTien = 0;
                for (int i = 0; i < dg_DanhSach.RowCount - 1; ++i)
                {
                    dg_DanhSach.Rows[i].Cells[0].Value = i + 1;
                    if (dg_DanhSach.Rows[i].Cells[5].Value != null)
                        TongTien += Convert.ToInt32(dg_DanhSach.Rows[i].Cells[5].Value.ToString());
                }
                tb_TongTien.Text = TongTien.ToString();
                bt_DongY.Enabled = true;
            }
            else
                bt_DongY.Enabled = false;
        }

        private void bt_DongY_Click(object sender, EventArgs e)
        {
            int kt = 0;
            for (int i = 0; i < dg_DanhSach.RowCount - 1; ++i)
                if (dg_DanhSach.Rows[i].Cells[3].Value == null || dg_DanhSach.Rows[i].Cells[5].Value == null ||
                    dg_DanhSach.Rows[i].Cells[3].Value.Equals(0) || dg_DanhSach.Rows[i].Cells[5].Value.Equals(0))
                {
                    kt = i + 1;
                    break;
                }
            if (kt != 0)
                MessageBoxEx.Show("Thiếu số lượng mặt hàng thứ " + kt.ToString() + ".", "Thông Báo");
            else
            {
                try
                {
                    DateTime t = DateTime.ParseExact(d_NgayLap.Text, "dd/MM/yyyy", null);
                    DataTable dt = (DataTable)dg_DanhSach.DataSource;
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = MainForm.Connect;
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.CommandText = "sp_ThemPhieuXuatHang";
                    cmd.Parameters.AddWithValue("@MaDaiLy", cb_Ten.SelectedValue);
                    cmd.Parameters.AddWithValue("@NgayLap", t);
                    cmd.Parameters.AddWithValue("@TongTien", tb_TongTien.Text);
                    cmd.Parameters.Add("@ReturnValue", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
                    MainForm.Connect.Open();
                    string MaPXH = (string)cmd.ExecuteScalar();
                    int result = (int)cmd.Parameters["@ReturnValue"].Value;
                    MainForm.Connect.Close();
                    if (result == 1)
                        MessageBoxEx.Show("Lập phiếu xuất hàng không thành công.\nNgày lập phiếu phải sau ngày tiếp nhận đại lý.", "Thông Báo");
                    else
                        if (result == 2)
                            MessageBoxEx.Show("Lập phiếu xuất hàng không thành công.\nTiền nợ sau khi lập phiếu xuất hàng phải không vượt quá tiền nợ tối đa của loại đại lý.", "Thông Báo");
                        else
                        {
                            for (int i = 0; i < dg_DanhSach.RowCount - 1; ++i)
                                MainForm.ExecProcedure("sp_ThemChiTietPXH",
                                                       new string[] { "@MaPhieuXuat", "@TenMatHang", "@SoLuong" },
                                                       new object[] { MaPXH, dg_DanhSach.Rows[i].Cells[1].Value, dg_DanhSach.Rows[i].Cells[3].Value });

                            MessageBoxEx.Show("Lập phiếu xuất hàng thành công.", "Thông Báo");
                            
                            
         
                            DialogResult kq = MessageBox.Show("Bạn có muốn in hóa đơn này ra không!", "Thông báo!", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign, false);
                            if (kq == DialogResult.Yes)
                            {
                                ReportPhieuXH frm = new ReportPhieuXH();
                                frm.MaPX = MaPXH;
                                frm.Show();
                            }
        
                        }
                }
                catch (SqlException sqlEx)
                {
                    MainForm.Connect.Close();
                    MessageBoxEx.Show("Lỗi kết nối cơ sở dữ liệu!\n" + sqlEx.Message, "Thông Báo");
                }
            }
        }

        private void dg_DanhSach_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if (dg_DanhSach.RowCount > 1 && (e.ColumnIndex == 1 || e.ColumnIndex == 3))
            {
                int kt = 0;
                for (int i = 0; i < dg_DanhSach.RowCount - 1; ++i)
                    if (dg_DanhSach.Rows[i].Cells[1].Value == null ||
                        (i != e.RowIndex && dg_DanhSach.Rows[e.RowIndex].Cells[1].Value == dg_DanhSach.Rows[i].Cells[1].Value))
                    {
                        kt = i + 1;
                        break;
                    }
                if (kt != 0)
                {
                    bt_DongY.Enabled = false;
                    MessageBoxEx.Show("Trùng với mặt hàng thứ " + kt.ToString() + " hoặc chưa chọn mặt hàng thứ " + kt.ToString() + ".", "Thông Báo");
                    dg_DanhSach.Rows.RemoveAt(e.RowIndex);
                }
                else
                {
                    bt_DongY.Enabled = true;
                    if (e.ColumnIndex == 1)
                    {
                        string dv = "";
                        string dg = "";
                        for (int i = 0; i < dt_MatHang.Rows.Count; ++i)
                            if (dt_MatHang.Rows[i]["TenMatHang"].ToString() == dg_DanhSach.Rows[e.RowIndex].Cells[1].Value.ToString())
                            {
                                dv = dt_MatHang.Rows[i]["TenDonViTinh"].ToString();
                                dg = dt_MatHang.Rows[i]["DonGia"].ToString();
                                break;
                            }
                        dg_DanhSach.Rows[e.RowIndex].Cells[2].Value = dv;
                        dg_DanhSach.Rows[e.RowIndex].Cells[4].Value = dg.Substring(0, dg.Length - 5);
                    }

                    if (dg_DanhSach.Rows[e.RowIndex].Cells[3].Value != null &&
                        dg_DanhSach.Rows[e.RowIndex].Cells[4].Value != null)
                    {
                        string t = dg_DanhSach.Rows[e.RowIndex].Cells[3].Value.ToString();
                        if (t.Length > 0)
                        {
                            if (Char.IsDigit(t, t.Length - 1))
                            {
                                int SoLuong = Convert.ToInt32(t);
                                int DonGia = Convert.ToInt32(dg_DanhSach.Rows[e.RowIndex].Cells[4].Value.ToString());
                                dg_DanhSach.Rows[e.RowIndex].Cells[5].Value = SoLuong * DonGia;
                                int TongTien = 0;
                                for (int i = 0; i < dg_DanhSach.RowCount - 1; ++i)
                                    if (dg_DanhSach.Rows[i].Cells[5].Value != null)
                                        TongTien += Convert.ToInt32(dg_DanhSach.Rows[i].Cells[5].Value.ToString());
                                tb_TongTien.Text = TongTien.ToString();
                            }
                            else
                                dg_DanhSach.Rows[e.RowIndex].Cells[3].Value = t.Substring(0, t.Length - 1);
                        }
                    }
                }
            }
        }

        DataTable dt_MatHang = new DataTable();


    }
}
